<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
<head>
<!-- $Id: package.html,v 1.3 2005/08/12 02:56:52 dsyrstad Exp $
     Copyright (c) 2002, David A. Hall
-->
</head>
<body>

Provides Functors and Predicates that operate on Java Objects that observe
the bean standard naming convention.  This is the home for functors that use
reflection in construction and/or evaluation.
<p>
In previous versions, the constructors used in this package created type-unsafe
functors.  This was due to an incomplete understanding on my part of the 
implications of parameterizing the Class class.  It's somewhat more obvious
to me know how clever this is: it allows the compiler to check that the class
given to a method is in fact the same class with which the functor is
parameterized.  The previous constructors did not take the class of the 
argument, or they used unparameterized classes as arguments: they typically
performed some reflection on the first argument passed to fn(), lazily
loading the Method or Constructor on the first call.
<p>
In this version, those constructors are deprecated.  They are likely to 
disappear in a future version (unless they prove necessary to the success
of some of the project goals).
<p>
<!--
Note that many of these functors are not entirely type-safe: the interaction
between generics and reflection in java is somewhat hands-off.  There is no
way, for example, to check that the type that is used at declaration of one of
these functors is compatable with a class object passed to its constructor.  If
there is a discrepency between the two, the class object will generally take
precedence (ie, the class object is used at runtime to perform reflective
operations, and the type used at declaration is not known at runtime).
<p>
It is up to the user to ensure that the class passed to the constructor of one
of these functors is correct.  The best way to ensure this may be to not cast 
the results of functor evaluation (the runtime will throw ClassCastException in 
this case - this will generally be detected during testing of the application.
(See the testConstructClassMismatch in TestConstructUnary for an example of 
this).
-->
</body>
</html>
